#pragma once
#include "Node.hpp"
namespace Level3 { class IRNode; }
namespace Level4
{
	class OperationNode :
		public virtual Node
	{
	public:
		OperationNode() = default;
		OperationNode(const OperationNode&) = delete;
		OperationNode& operator=(const OperationNode&) = delete;
		virtual ~OperationNode() {}
		virtual Level3::IRNode* Compile() = 0;
		virtual Level3::IRNode* Execute() = 0;
	};
}